var functionsDotacaoForm = {
		
	Projeto_codigo: ""	
		
		
	,setaCodigoProjeto: function(codigoProjeto){
		functionsDotacaoForm.Projeto_codigo = codigoProjeto;
		formDotacao.getForm().findField("Projeto_codigo").setValue(codigoProjeto);
	}
		
	/*
	 * @description: Função responsável por incluir nova dotação
	 * @author: Juliano Zinni
	 * @since: 24/08/2011
	*/	
	,insereRegistro: function(button){
		var form = formDotacao.getForm();		
		
		if(form.isValid())
		{
			this.params = formDotacao.form.getValues(true);
		
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Inserindo...'});
	
			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=DotacaoController&service=inserir',
				success:  function(result){
				
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						windowDotacaoForm.hide();
						functionsListDotacao.listaDotacoes(functionsDotacaoForm.Projeto_codigo);
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
	
				},
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		}

	}

	/*
	 * @description: Função responsável por alterar nova dotação
	 * @author: Juliano Zinni
	 * @since: 25/08/2011
	*/
	,alteraRegistro: function(button){
		var form = formDotacao.getForm();
		
		if(form.isValid())
		{
			this.params = formDotacao.form.getValues(true);
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Alterando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=DotacaoController&service=alterar',
				success:  function(result){
				
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						windowDotacaoForm.hide();
						functionsListDotacao.listaDotacoes(functionsDotacaoForm.Projeto_codigo);
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
	
				},
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		
		}
	}
	
	,cancelamento: function(){
		windowDotacaoForm.hide();
	}
	
	,capturaDotacao: function(codigoDotacao){
		var objparams = {
			codigoDotacao: codigoDotacao
		}
		capturaDotacao.load({params : objparams, callback: this.returnCapturaDotacao});
		
	}
		
	,returnCapturaDotacao: function(record, options, success){
		formDotacao.getForm().loadRecord( record[0] );
	}
	
	,resetForm: function(){
		formDotacao.form.reset();
	}
}


var capturaDotacao = new Ext.data.JsonStore({
    storeId: 'capturaDotacao',
    url: baseURL + '/service/index.php?controller=DotacaoController&service=capturarDotacao',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'nome', direction: 'ASC'},
    fields: [
		'codigo'
		, 'Projeto_codigo'
		, 'nome'
		, 'descricao'
		, 'valorTotal'
		, 'situacao'
    ]
   
});


var formDotacao = new Ext.form.FormPanel({
	layout: 'form'
	,border: false
	,bodyStyle: 'padding: 8px'
	,items:[
		{
			xtype: 'fieldset'
			, title: 'Dados Dotação'
			, collapsible: true
			, defaultType: 'textfield'
			, defaults:{
				anchor: '100%'
			}	
			,items: [
				{
					xtype: 'hidden'
					,name: 'codigo'
					,id: 'codigoDotacao'
				}
				,{
					xtype: 'hidden'
					,name: 'Projeto_codigo'
					,id: 'Projeto_codigo'
				}
			    ,{
			    	fieldLabel:'Nome'
					,name:'nome'
					,allowBlank: false
				} 
			    ,{  
			    	xtype:'textarea'
					,fieldLabel:'Descrição'
					,name:'descricao'
					,anchor:'100%'
			    }
			    ,{
					xtype: 'masktextfield'
					,fieldLabel: 'Valor Total'
					,name:'valorTotal'
					,mask: 'R$ #9.999.990,00'
					,money: true
				}
			    
			    ,{
					xtype: 'combo'
					,fieldLabel: 'Situação'
					,name: 'situacao'
					,store: [['S','Ativo'],['N','Inativo']]
					,displayField: 'situacao'
					,valueField: 'codigo'
					,hiddenName: 'situacao'
					,mode: 'local'
					,typeAhead: true
					,triggerAction: 'all'
					,allowBlank: false
					,editable: false
				}
			]
		}
	]
})



var windowDotacaoForm = new Ext.Window({
	width: 500
	,title: 'Dotação'
	,height: 350
	,modal:true
	,layout: 'fit'
	,closeAction:'hide'
	,constrain	: true
	,maximizable: true
	,items: formDotacao
	,buttons:[
  		{
  			text: 'Salvar'
  			, iconCls: 'bt_salvar'
  			, scope	: this
  			, handler: function(){
  				
  				if(Ext.getCmp('codigoDotacao').getValue() !=  ""){
  					functionsDotacaoForm.alteraRegistro();
  				}else{
  					functionsDotacaoForm.insereRegistro();
  				}
  				
  			}
  		 }
  		,{
  			text: 'Cancelar'
  			, iconCls: 'bt_cancelar'
  			, scope	: this
  			, handler: functionsDotacaoForm.cancelamento
  		}
  	]
	,listeners: {
		"afterrender": function(){ // carregamento só é executado depois da tela ser renderizada
			//functionsListAtividadesComCusto.listaAtividadesComCusto(1);
		}
	}
	
});

























































var functionsListDotacao = {
	
	Projeto_codigo: ""	
		
	,init: function(){
		functionsListDotacao.listaDotacoes(functionsListDotacao.Projeto_codigo);
	}	
		
	,createRecord: function(){
		functionsDotacaoForm.resetForm();
		functionsDotacaoForm.setaCodigoProjeto(functionsListDotacao.Projeto_codigo);
		windowDotacaoForm.show();
	}	 
	
	,editRecord: function(){
		
		if(gridDotacoes.getSelectionModel().hasSelection()){
			formDotacao.form.reset();
			
			var selectedRow = gridDotacoes.getSelectionModel().getSelections();
			var objetoDotacao = selectedRow[0].data;
			
			functionsDotacaoForm.Projeto_codigo = functionsListDotacao.Projeto_codigo;
			functionsDotacaoForm.capturaDotacao(objetoDotacao.codigo);
			functionsDotacaoForm.resetForm();
			windowDotacaoForm.show();
			
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Nenhum registro foi selecionado!',
				type: 'warning',
				pause: 3
			});
		}

	}
	
	,deleteRecord: function(){
		if(Ext.getCmp('dotacoes').getSelectionModel().hasSelection()){
			
			Ext.MessageBox.confirm('Confirmação de Exclusão','Realmente deseja excluir esse registro?', function(btn)
			{
				if(btn == 'yes')
				{
					var selectedRow = Ext.getCmp('dotacoes').getSelectionModel().getSelections();
					this.params = "&codigo=" + selectedRow[0].data.codigo;
					
					Ext.Ajax.request({
						url: baseURL + '/service/index.php?controller=DotacaoController&service=excluir',
						


						
						
						
						
						
						
						success:  function(result){
						
							var objRetorno = Ext.decode(result.responseText);
							
							if(objRetorno.success == true){
								Ext.ux.MessageBox.flash({
									msg: objRetorno.message,
									type: 'success'
								});
								
								functionsGridAtividade.listaAtividades(functionsGridAtividade.Projeto_codigo, functionsGridAtividade.Projeto_nome)
								
							}else{
								Ext.ux.MessageBox.flash({
									msg: objRetorno.message,
									type: 'error'
								});
							}
			
						},
						
						
						
						
						params: this.params,
						scope: this			
					});
				}
			}, this);
			
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Nenhum registro foi selecionado!',
				type: 'warning',
				pause: 3
			});
		}
	}
	
	,listaDotacoes: function(codigoProjeto){
		var objparams = {
			Projeto_codigo: codigoProjeto
		}
		listaDotacoes.load({params : objparams, callback: functionsListDotacao.returnListaDotacoes});
	}
	
	,returnListaDotacoes: function(record, options, success){
		
		if(success){
			Ext.ux.MessageBox.flash({
				msg: "Dotações listadas com sucesso",
				type: 'success'
			});
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento da listagem das dotações",
				type: 'error'
			});
		}
	}
}




























/*
 * @description: Store responsável por listar as dotações de um projeto específico
 * @author: Juliano Zinni
 * @since: 25/08/2011
*/
var listaDotacoes = new Ext.data.GroupingStore({
    storeId: 'listaDotacoes',
    url: baseURL + '/service/index.php?controller=DotacaoController&service=listarDotacoes',
    autoLoad: false,
	sortInfo: {field: 'nome', direction: 'ASC'},
	groupField: 'situacao',
	reader: new Ext.data.JsonReader({
        idProperty:'codigo',
        fields: [
            {
				name		: 'codigo'
				,mapping	: 'codigo'
			}
			,{
				name		: 'nome'
				,mapping	: 'nome'
			}
			
			,{
				name		: 'valorTotal'
				,mapping	: 'valorTotal'
				,type		: 'float'
			}
			,{
				name		: 'totalEntradas'
				,mapping	: 'totalEntradas'
				,type		: 'float'
			}
			,{
				name		: 'totalSaidas'
				,mapping	: 'totalSaidas'
				,type		: 'float'
			}
			,{
				name		: 'saldoDotacao'
				,mapping	: 'saldoDotacao'
				,type		: 'float'
			}
			,{
				name		: 'situacao'
				,mapping	: 'situacao'
			}
        ],
		// additional configuration for remote
        root:'elements',
        remoteGroup:false,
        remoteSort: false
    })
	
	
	

});



var barButtonDotacao = new Ext.Toolbar({
	items: [
		{
        	text: 'Novo'
        	,handler: functionsListDotacao.createRecord
        	,iconCls: 'bt_novo'
        	,ref: 'novaDotacao'
    	}
    	,{
        	text: 'Editar'
        	,iconCls: 'bt_editar'
        	,handler: functionsListDotacao.editRecord
        	,disabled: true
        	,id: 'btEditarDotacao'
    	}
    	,{
        	text: 'Deletar'
        	,iconCls: 'bt_deletar'
        	,handler: functionsListDotacao.deleteRecord
        	,disabled: true
        	,ref: 'deletar'
        	,id: 'btDeletarDotacao'
    	}
    	
    ]
});

var barButtonLegendaDotacao = new Ext.Panel({
	
	html: '<table cellpadding="2" cellspacing="2" style="font-size:11px"><tr><td><img src="img/marquer_green.png"></td><td>Meta atingida</td><td><img src="img/marquer_yellow.png"></td><td>Meta não atingida</td></tr></table>'
	,cls: 'bar_button_atividade'
	,border: false
	,height: 28
	,style: 'padding:4px'
});

var summaryDotacao = new Ext.ux.grid.HybridSummary();

var gridDotacoes = new Ext.grid.GridPanel({
	id: 'dotacoes'
	,loadMask	: true
	,width: '100%'
	,height: 350
	,border		: false
	,tbar: barButtonDotacao
	
	,view: new Ext.grid.GroupingView({
        forceFit:true
        ,showGroupName: false
        ,enableNoGroups:false
		,enableGroupingMenu:false
        ,hideGroupedColumn: true
        ,emptyText		: 'Nenhum registro encontrado'
		,deferEmptyText : false
		,showPreview   : true
		,enableRowBody : true
		
		
		,getRowClass   : function(record, index) {
			if(record.data.totalEntradas >= record.data.valorTotal) {
				return 'green_row';
			}else{
				return 'yellow_row';
			}
		}
		
    })
	
	
	
	,store: listaDotacoes
	,plugins: summaryDotacao
	,autoExpandColumn: 'nome'
	,columns:[
		{
			dataIndex	: 'codigo'
			,id			: 'codigo'
			,header		: 'Cod'
			,width		: 50
		}
		,{
			dataIndex	: 'nome'
			,id			: 'nome'
			,header		: 'Nome'
			,width		: 170					
		}
		,{
			dataIndex	: 'valorTotal'
			,xtype		: 'numbercolumn'
			,format		: '0.000,00/i'
			,id			: 'valorTotal'
			,header		: 'Meta Arrecadação'
			,width		: 110
			,renderer : function(c, d, b) {
				var a = Ext.util.Format.number(c, '0.000,00/i');
				return '<span style="font-weight:bold">' + a + '</span>';
			}
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
			,summaryType:'sum'
			
		}
		,{
			dataIndex	: 'totalEntradas'
			,xtype		: 'numbercolumn'
			,format		: '0.000,00/i'
			,id			: 'totalEntradas'
			,header		: 'Entradas(arrecadado)'
			,width		: 110
			,renderer : function(c, d, b) {
				var a = Ext.util.Format.number(c, '0.000,00/i');
				return '<span style="font-weight:bold">' + a + '</span>';
			}
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
			,summaryType:'sum'
		}
		
		,{
			dataIndex	: 'totalSaidas'
			,xtype		: 'numbercolumn'
			,format		: '0.000,00/i'
			,id			: 'totalSaidas'
			,header		: 'Saídas'
			,width		: 110
			,renderer : function(c, d, b) {
				var a = Ext.util.Format.number(c, '0.000,00/i');
				return '<span style="font-weight:bold">' + a + '</span>';
			}
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
			,summaryType:'sum'
		}
		
		,{
			dataIndex	: 'saldoDotacao'
			,xtype		: 'numbercolumn'
			,format		: '0.000,00/i'
			,id			: 'saldoDotacao'
			,header		: 'Saldo Atual'
			,width		: 110
			,renderer : function(c, d, b) {
				var a = Ext.util.Format.number(c, '0.000,00/i');
				return '<span style="font-weight:bold">' + a + '</span>';
			}
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
			,summaryType:'sum'
		}
		,{
			dataIndex	: 'situacao'
			,id			: 'situacao'
			,header		: 'Situação'
			,width		: 100
			,renderer	: trataSituacao
		}
	],
	bbar: barButtonLegendaDotacao
})

gridDotacoes.getSelectionModel().on('selectionchange', function(sm){
	Ext.getCmp('btEditarDotacao').setDisabled(sm.getCount() < 1)
	Ext.getCmp('btDeletarDotacao').setDisabled(sm.getCount() < 1)
});







var windowDotacao = new Ext.Window({
	width: 900
	,title: 'Gerenciar Dotações'
	,height: 550
	,modal: true
	,layout: 'fit'
	,closeAction:'hide'
	//,constrain	: true
	,maximizable: true
	,items: [gridDotacoes]
});









